-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Change default inventory key to E, default Aux1 key to F #16053
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
IMHO... why change the default? If folks want to change it, they have the option. |
Please review the discussion in #16052. The short answer is that the default inventory key of "I" cannot be pressed without looking down at the keyboard and Luanti should come with solid defaults. As a case study Minecraft started with inventory key being "I" but switched to "E" after user feedback. |
Adding to milestone, because I think we should decide this before release. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Works. I support this.
@Zughy I understand the sentiment, just remember that existing players would not have to "rewire their brains" since their existing local controls settings won't change. This is primarily targeted to new players and a general best-by-default UX improvement which should make Luanti in general more attractive and prevent early frustration in playing using the engine (like my friend and I experienced). You mention that you have a game as a soft landing from people coming from Minecraft - we should ensure those new players continue to come. I completely agree that there should be per-game controls and mod-suggested keyboard defaults. You can view this PR as a stepping stone toward greater acceptance of similar changes. Once I implement encryption over Luanti's networking stack I would be happy to help you work on a per-game controls feature. I don't want to get this PR held up however because I very strongly feel it is necessary from a new player perspective. |
Right now modders have no way to get the key associated to the action. Meaning that if there is a HUD telling that Action A = AUX1, the default might be E or F according to the client version (and you'll either write E or F, "AUX1" doesn't make sense to the average player). So if our HUDs are already broken for mobile users and people with custom keybinding, now they'll always be broken even for PC players depending on LT version because we had to pick whether to stick to E or F. Unless, which is more coding, we display two different texts by checking the version. It'd be fine if this were going in the right direction, but it's not: when/if all the keys become available like in a real engine, we'll need to change the code again (hardcoded AUX1 (E, F) or TAB). No, thanks.
Then let's plan this for 5.13, in 3 months, alongside what I've requested*, so games like mine don't have to be punished for the "greater good". Air quotes because I'd like to remind that my server was the only one being featured twice in a row at FOSDEM at the Luanti booth, so again, we're not talking about a niche game with a couple of users per day. I expect Luanti not to complicate the life of those games that actually make it more popular, especially if those games did nothing wrong. Moreover, last time I checked we wanted to be as much detached as possible from being a Minecraft clone, yet this move only makes life easier for Minecraft clones, potentially worsening it for games that are not interested in being one. *It's obvious that in order to do that, we need to have a clear direction and not just merge whatever we want. But this is a horse of a different colour |
This comment was marked as resolved.
This comment was marked as resolved.
I agree with Zughy, this change will make any existing tutorials/videos confusing to new users as they will have the old inventory/Aux 1 key being used. If new players are having such trouble finding the inventory key it sounds like we should do a better job exposing the keys to new users, and letting them know that they can change them to whatever they'd like. |
@NathanSalapat This is not an issue with finding the inventory key. The point of the PR is that the I kind of expected some resistance: Minecraft forums had some people who still preferred the |
That makes totally sense, back then I was playing Minecraft using E as well. The issue here is that Minecraft was and still is a game. Here, on the contrary, we're talking about a gaming platform, which is different. We can't just ignore some games to benefit others |
First I want to clarify one point:
Changing the default will change it for everyone, except if they have explicitly set these keys in their config (e.g. by changing them
This is true but largely unavoidable. If we think that In the same breath as the dialog for #16049 we can even inform players that the keys have changed, provide convenient options
Keeping the default key bindings the same forever was never realistic, and you were relying on the peculiarity of Luanti using character-based keybindings instead of scancodes. In fact all QWERTZ users now need to press a totally different key to zoom. I do not see the same opposition to that change.
I agree. However, this is not what this PR is about. If it was realistic to have flexible keys ready for 5.13 I could be convinced to hold off of this change, but we know this isn't the case.
Can you elaborate on why this is a drawback for certain games? The whole premise of this PR is that
Don't you have this anyway to account for mobile players? While it won't work with in-game graphics the proper solution to this is an escape sequence like hecks proposed some day that dynamically expands to whatever key AUX1 is bound to on each client. |
In addition to this, the old keybinding menu (before #15791; i.e., 5.11 and earlier ...) only saved keybindings that were different from the default value, and binding a key to its default clears the setting: luanti/src/gui/guiKeyChangeMenu.cpp Lines 208 to 216 in 0cb7735
Related: #14788. Although I would instead prefer introducing an escape sequence that gets expanded client-side. Also: graphical buttons are hard to get right while also allowing styling. I can imagine that we merge this after addressing #14788, but given that said feature will not be implemented in the current release cycle I am not sure whether it is a good idea to break keybinding defaults in two consecutive releases instead of merging this PR into 5.12. |
Which is fine if
Inb4: "regarding this screen, how about mobile users?"
I don't know, my whole point is that we don't care about the inventory because we don't feature it basically anywhere, making E/AUX1 a fundamental key for some games and the lobby. Now that the default gets moved to F, that means rewiring our brain. Which is fine if the rewiring meant a better key (which varies according to the game, hence the request for games to choose their mapping; in our case is TAB, except for Sumo, where F makes more sense), but it's not going in that direction. This PR makes life easier for games featuring inventories but it worsens it for games not caring about inventories and that use E/AUX1 as a key part of their gameplay |
Could we perhaps settle this with a long-running poll on the forums? There's only a few people on GitHub, thus limited feedback. |
But we're not planning to change the Aux1 default again. The Tab key you want would only come with custom keybindings.
That's not how it is in 5.12-dev right now, to be clear. ¹: AFAICT French users were never able to play Luanti on default settings because their WASD is ZQSD instead
I think I get it now. In short: You have a game that uses
Poll for what exactly?
That is true, but this isn't my reason for proposing to do this change in 5.12. |
As discussed in the meeting we would like consensus on the following question:
ping @luanti-org/engine |
I was referring to the picture down below, as in "that's how the minigame currently looks like"
Exactly |
I understand that Luanti wants to be a general platform. I do however find it odd that the fact that it "makes life easier for Minecraft clones" is presented as an argument against this. Luanti is a voxel game engine, and sandbox games will always be a big part of it (Minecraft clones or not). I do not see how deliberately avoiding changes because it benefits a certain type of game would be of any benefit to the project. There are also a lot of non-sandbox games that have some form of inventory management. I searched online and found this reddit post which lists quite a few. The games listed span multiple different genres (in fact, most are not survival sandbox games). The inventory formspec in Luanti is also very general and does not have to be a traditional grid based inventory. FPS games can for example use it as an inventory screen to customize weapons. The by far most popular non-sandbox Luanti game (by multiplayer activity) is also Capture the flag, which makes heavy use of the inventory key. The default controls will always be a compromise. It does however make sense for the default controls to be somewhat optimized for the "average" Luanti game. It is an objective fact that the I key for inventory is bad for most games due to people not being able to press it consistently without looking down. I also think it is pretty clear that E makes most sense because it will be familiar with other popular games out there. |
That's how the sentence you quoted continues: ", potentially worsening it for games that are not interested in being one". This conversation is already pretty hard to sustain, please don't add cherrypicking, thank you.
So in your logic if I'm not the most popular server out there (even if I'm one of the most played nonetheless) my practical use case is irrelevant? What? What's next, discredit my server because in the end is not that great so we shouldn't care?
Yet again: great. But I'm not the average Luanti game and I see no reason why after 5 years of server development and LT contributions I should be punished because I chose not to stick with the "average" Luanti game model. Give me the possibility to customise players' keybinding and everyone will be happy. You don't? Average games UX will be better, my server's will be worse - and that, I don't accept it. It's already frustrating having active skills on zoom, doing tricks with the pinkie every time, my users and I don't deserve to also get used to F. Dealing with keybindings in general is already pretty frustrating, as modders have few to work with and good UX to reach |
I apologize if I focused too much on that phrasing. I see that my response mischaracterized what you said slightly and I take that back. I am the maintainer of a package that was implied in your comment so it felt a bit personal for me too. The way I understood your argument was that (1) Luanti wants to be a general game platform; (2) this change primarily benefit survival sandbox games; and (3) it will be an inconvenient change for your game (perhaps others also). That together then implies that this change goes against the Luanti goal (1) and should not be made. This is the reasoning I disagree with. I do not think which games benefit most should have anything to do with it, as long as the change is good overall. My argument was also that even if this change would likely benefit survival sandbox games more than other games, it will still benefit Luanti games as a whole. A lot of games have inventory management, and I is very unfriendly to all of them. Contrary to what you wrote when you said that this change "only makes life easier" for the type of game I am developing. Again, I may have focused a bit much on phrasing but I still think my comment raised good points and what I quoted was worth addressing.
I am not discrediting your server. I respect that you are trying to create something different. My point is that when it comes to trade-offs like default controls, one should consider the "average" use case more than uncommon use cases. I do not think this should be controversial.
Again, I am sorry I offended you. That was not my intention. I value all your contributions to Luanti (both engine dev and game dev). That said, I have also been involved with Luanti for a long time and so have many others. Collectively across all individuals more effort has been spent on the games that will benefit from these changes than those which will be inconvenienced by it. I have not played your minigames but I do not understand how moving E to F is a significant change (other than having to relearn). Both keys are reached with the same finger and is next to the key the finger normally rests on. It feels reasonable to assume that people will adapt to it, and people who do not want to relearn can simply remap aux1 to E. Edit: I tested and realize F is a slightly longer reach because it goes sideways. It is still a minor change though, especially when compared to I to E. |
I have previously suggested #16052 (comment) Ctrl for default Aux1 (what I personally use). That may be a better candidate, but considering it is a bigger change I can see people being more skeptical towards it. |
@sfan5 I might have a solution here that would make everyone happy: add AUX2 as you previously suggested, where AUX2 is Tab by default (if enabled). I'd simply use AUX2 instead of AUX1, except for Sumo where F is supposed to make you go faster (so F makes sense, so AUX1). People like @ryvnf would have their inventory key closer and I would have the keybinding I was looking for since the beginning (TAB). Thoughts? |
Sounds good to me. |
@grorp pointed out that AUX2 is a problem for Android (or the touch GUI in general) because it needs to be bound to a button. However aux2 has no function on its own, so what should the symbol look like? Edit: I guess I misunderstood it a bit. here's a quote instead:
|
Aux1 is just an icon saying "Aux1" so... "Aux2"? It's ugly but It's coherent |
That's what you would do, yes. But it doesn't solve the fundamental problem. |
Since I got pinged by this PR, here are my personal thoughts, in case it matters, otherwise ignore it. From my experience, |
Let's cut the chase: if core devs think this #11446 (comment) is a viable solution, I can offer €150 to accelerate the development, PayPal taxes on me. I'm tired of being limited to Zoom, Aux1 and Drop key |
I do not think a bounty changes things in a significant way. I still think the PR should be merged in the mean time. Merging it does not go against future fully customizable keybindings as it only changes defaults. Maybe if it were to add Aux2, but I do not think that is necessary. To me #12488 is still very far away, even with a bounty. It requires a lot of changes and the introduction of a completely new set of APIs that need be fleshed out. From what I can tell (from discussion and SSCSM tag) the consensus is also that it should be implemented using SSCSMs which are currently not in place and becomes a blocker. That makes sense considering custom keybinds (like opening inventory) would otherwise be affected by server latency. I also found a forum post from 2022 which lists good arguments for changing the defaults: It proposes using E and F exactly like this PR. I think the fact that it has been independently suggested and the majority seemed to agree with the forum post suggests that it will be a positive change. |
I don't think F is a good location for aux, it's an unusual location for both sprinting/fast and auxilliary actions. In most other games, they're separate keys with sprint being LShift or LCtrl and aux being E or a mouse button. To avoid this endless debate, I'd recommend leaving this for now and certainly not changing it for 5.12.0, we've done this for many years and users can always rebind if the position annoys them. Once we have an actions API, we can turn aux1 into just a fast key at LShift and let mods define their own more specific control schemes. |
I'm certain I've mentioned this before, but why does everyone seem to ignore the To be clear, I also agree with not changing anything for 5.12.0. |
Why not open the inventory with Tab instead of I, which is used in more games and allows you to close and open inventories with text fields? |
To do
This PR is Ready for Review.
/for-players/controls/
How to test
Launch a new game that uses inventory and Aux1 (e.g. VoxeLibre). Press E for inventory. Hold F to run.